package shop.local.valueobjects;

import shop.exceptions.KundeExistiertBereitsException;
import shop.exceptions.KundeExistiertNichtException;

import java.io.Serializable;
import java.util.HashMap;

public class KundenListe extends HashMap<Integer, Kunde> implements Serializable  {

	private static final long serialVersionUID = -1733960508328481556L;

	public KundenListe() {}

	public Kunde KundenSuche(int kID) throws KundeExistiertNichtException {
		boolean existiert = false;
		for (int i = 1; i <= this.size(); i++) {
			if (this.get(i).getKundenNr() == kID) {
				existiert = true;
				return this.get(i);
			}
		}
		if (!(existiert)) {
			throw new KundeExistiertNichtException();
		}
		return null;
	}
	
	public Kunde letzterKunde() {
		return this.get(this.size());
	}



	public void einfuegen(Kunde k) throws KundeExistiertBereitsException {
		if (this.size() == 0) {
			this.put(1, k);
		}
		else {
			for (int i = 1; i <= this.size(); i++) {
				if (this.get(i).equals(k))
					throw new KundeExistiertBereitsException(k, " - in 'einfuegen()'");
			}
			this.put(this.size() + 1, k);
		}
	}

	public void loeschen(int kID) throws KundeExistiertNichtException {
		boolean geloescht = false;
		for (int i = 1; i <= this.size(); i++) {
			if (this.get(i).getKundenNr() == kID) {
				this.remove(i);
				geloescht = true;
			}
		}
		if (!(geloescht)) {
			throw new KundeExistiertNichtException();
		}
	}


	// toString Methode Ueberschrieben
	public String toString() {
		String result = "";
		String zeilenEnde = System.getProperty("line.separator");
		for (int i = 1; i <= this.size(); i++) {
			result = result + this.get(i) + zeilenEnde;
		}
		return result;
	}
}
